﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using FrbaBus.Core;

namespace FrbaBus.Registrar_LLegada_Micro
{
    public partial class RegistrarLLegada : Form
    {
        private int fechasalida;

        public RegistrarLLegada()
        {
            InitializeComponent();
        }
        public class Origenes
        {

        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void RegistrarLLegada_Load(object sender, EventArgs e)
        {
            
        }

        private void button1_Click(object sender, EventArgs e)
        {
            
            if (string.IsNullOrEmpty(textBoxPatente.Text) || string.IsNullOrEmpty(comboBox1.Text) || string.IsNullOrEmpty(comboBox2.Text))
            {
                MessageBox.Show("Hay campos incompletos. Complete todos los campos.");
            }
            else
            {
                DBManager db = new DBManager();
                SqlCommand consulta = new SqlCommand("SELECT ALL_IN.existePatente('" + textBoxPatente.Text + "')");
                SQLResponse r = db.executeQuery(consulta);
                if (r.result.Rows[0][0].ToString() == "False")
                {

                    MessageBox.Show("Esa patente no pertenece a un micro del sistema.");
                    textBoxPatente.Clear();
                }
                else
                {
                    SqlCommand consulta2 = new SqlCommand("SELECT ALL_IN.existeViaje('" + textBoxPatente.Text + "','" + comboBox1.Text + "','" + comboBox2.Text + "')");
                    SQLResponse r2 = db.executeQuery(consulta2);
                    if (r2.result.Rows[0][0].ToString() == "False")
                    {

                        MessageBox.Show("Ese micro no se encuentra realizando ese viaje en las ultimas 24hs o ya fue registrada su llegada en el día de hoy.");
                        textBoxPatente.Clear();
                    }
                    else
                    {
                       monthCalendar1.Visible = true;
                       monthCalendar1.MinDate = Convert.ToDateTime(System.Configuration.ConfigurationManager.AppSettings["Fecha"]);
                       textBox1.Visible = true;
                       comboBoxhora.Visible = true;
                       label3.Visible = true;
                       button2.Visible = true;
                       label5.Visible = true;
                       SqlCommand consulta5 = new SqlCommand("select year(ALL_IN.viaje.fecha_salida),month(ALL_IN.viaje.fecha_salida),day(ALL_IN.viaje.fecha_salida),DATEPART(hh,ALL_IN.viaje.fecha_salida)  from ALL_IN.Viaje join ALL_IN.recorrido on ALL_IN.Recorrido.ID_Recorrido=ALL_IN.Viaje.ID_recorrido  where ALL_IN.Recorrido.Origen='" + comboBox1.Text + "' and ALL_IN.Recorrido.Destino='" + comboBox2.Text + "' and ALL_IN.Viaje.Patente='" + textBoxPatente.Text + "' and ALL_IN.Viaje.baja = 0 and ALL_IN.Viaje.fecha_llegada IS NULL and ALL_IN.Viaje.fecha_salida between (select * from ALL_IN.Fecha_Actual) and DATEADD(day,1,(select * from ALL_IN.Fecha_Actual))");
                       SQLResponse r5 = db.executeQuery(consulta5);
                       string hora = r5.result.Rows[0][3].ToString();
                       string mes = r5.result.Rows[0][1].ToString();
                       string dia = r5.result.Rows[0][2].ToString(); 
                       if (int.Parse(hora) < 9) //Hora-3
                       {
                           hora = "0" + hora;
                       }
                       if (int.Parse(dia) < 9) //Dia-2
                       {
                           dia = "0" + dia;
                       }
                       if (int.Parse(mes) < 9) //Mes-1
                       {
                           mes = "0" + mes;
                       }
                       textBox2.Text = r5.result.Rows[0][0].ToString() + "-" + mes + "-" + dia + " " + hora + ":00:00";
                       fechasalida = int.Parse(r5.result.Rows[0][0].ToString() + mes + dia + hora);
                       textBox2.Visible = true;
                       label4.Visible = true;
                    }



                }
            }

        }

        private void comboBox1_DropDown(object sender, System.EventArgs e)
        {
            DBManager db = new DBManager();
            SqlCommand consulta = new SqlCommand("SELECT distinct (Origen)  from ALL_IN.Recorrido order by 1");
            SQLResponse r = db.executeQuery(consulta);
            SqlCommand consulta2 = new SqlCommand("select COUNT (distinct (Origen) ) from ALL_IN.Recorrido");
            SQLResponse r2 = db.executeQuery(consulta2);
            int valor = (int)r2.result.Rows[0][0];
            for (int i = 0; i < valor; i++)
            {
                comboBox1.Items.Add(r.result.Rows[i][0].ToString());
            }

            db.desconectar();
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
        private void comboBox2_DropDown(object sender, System.EventArgs e)
        {
            DBManager db = new DBManager();
            SqlCommand consulta = new SqlCommand("SELECT distinct (Destino)  from ALL_IN.Recorrido order by 1");
            SQLResponse r = db.executeQuery(consulta);
            SqlCommand consulta2 = new SqlCommand("select COUNT (distinct (Destino) ) from ALL_IN.Recorrido");
            SQLResponse r2 = db.executeQuery(consulta2);
            int valor = (int)r2.result.Rows[0][0];
            for (int i = 0; i < valor; i++)
            {
                comboBox2.Items.Add(r.result.Rows[i][0].ToString());
            }

            db.desconectar();
        }



        private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e)
        {

            DateTime dia = monthCalendar1.SelectionStart;
            string registro = dia.ToString("yyyy-MM-dd");
            textBox1.Text = registro;       


        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "" || comboBoxhora.Text == "" )
            {
                MessageBox.Show("Faltan campos por completar. Verificar el ingreso de una Fecha, Hora-Minuto-Segundo");
            }
            else
            {
                string home = Environment.ExpandEnvironmentVariables("%HOMEDRIVE%%HOMEPATH%");
                string file_name = home + "\\Registro_llegada.sql";
                DBManager db = new DBManager();
                DateTime dia13 = monthCalendar1.SelectionStart;
                string registro = dia13.ToString("yyyyMMdd") + comboBoxhora.Text;
                int fechanueva = int.Parse(registro);
                if (fechanueva > (fechasalida + 100))
                {
                    MessageBox.Show("La fecha de llegada no puede ser mayor a 24hrs de la salida del micro.");
                }
                
                else if (fechasalida < fechanueva)
                {
                    DateTime dia = monthCalendar1.SelectionStart;
                    string fecha2 = dia.ToString("yyyyMMdd");
                    string anio1 = dia.ToString("yyyy");
                    string mes1 = dia.ToString("MM");
                    string dia1 = dia.ToString("dd");
                    System.IO.StreamWriter objWriter;
                    objWriter = new System.IO.StreamWriter(file_name, true);

                    string s1,s4, s5,s6,s7;

                    SqlCommand consulta2 = new SqlCommand("select id_recorrido from ALL_IN.Recorrido where origen = '" + comboBox1.Text + "' and Destino = '" + comboBox2.Text + "'");
                    SQLResponse r2 = db.executeQuery(consulta2);
                    string idrecorrido = r2.result.Rows[0][0].ToString();
                    s1 = comboBoxhora.SelectedItem.ToString();
                    s4 = s1 + ":00:00.000";
                    s5 = "UPDATE ALL_IN.Viaje  set fecha_llegada = CONVERT(datetime, '" + fecha2 + " " + s4 + "',120) where patente = '" + textBoxPatente.Text + "' and id_recorrido = '" + idrecorrido + "' and ALL_IN.Viaje.fecha_salida between (select * from ALL_IN.Fecha_Actual) and DATEADD(day,1,(select * from ALL_IN.Fecha_Actual)) and baja = 0";
                    s7 = "UPDATE ALL_IN.Puntaje set Acreditados=1 where YEAR(fecha_salida)='" + anio1 + "' and MONTH(fecha_salida)='" + mes1 + "' and DAY(Fecha_Salida)='" + dia1 + "' and Cli_DNI in (select distinct(Cli_DNI) from ALL_IN.Disponibilidad_Butaca where ID_recorrido='" + idrecorrido + "' and Mic_Patente ='" + textBoxPatente.Text + "' and year(Fecha_Salida) ='" + anio1 + "' and MONTH(fecha_salida)='" + mes1 + "' and DAY(Fecha_Salida)='" + dia1 + "')";
                    s6 = "UPDATE ALL_IN.Viaje  set fecha_llegada = CONVERT(datetime, (select * from ALL_IN.Fecha_Actual),120) where patente = '" + textBoxPatente.Text + "' and id_recorrido = '" + idrecorrido + "' and ALL_IN.Viaje.fecha_salida between (select * from ALL_IN.Fecha_Actual) and DATEADD(day,1,(select * from ALL_IN.Fecha_Actual)) and baja = 0";
                    objWriter.WriteLine(s5);
                    objWriter.WriteLine(s7);
                    objWriter.Close();
                    SqlCommand consulta3 = new SqlCommand(s6);
                    db.executeQuery(consulta3);
                    MessageBox.Show("La llegada del micro fue registrada.");

                    monthCalendar1.Visible = false;
                    textBox1.Visible = false;
                    button2.Visible = false;
                    comboBoxhora.Visible = false;
                    textBox2.Visible = false;
                    label3.Visible = false;
                    label4.Visible = false;
                    label5.Visible = false;
                    comboBox1.Text = "";
                    comboBox2.Text = "";
                    textBoxPatente.Text = "";
                    
                }
                else
                {
                    MessageBox.Show("Fecha seleccionada incorrecta. La fecha de llegada no puede ser menor a la fecha de salida.");
                }
            }
        }



        private void label3_Click(object sender, EventArgs e)
        {

        }

        private void label3_Click_1(object sender, EventArgs e)
        {

        }

        private void textBoxPatente_TextChanged(object sender, EventArgs e)
        {

        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
        {

        }

        private void comboBoxhora_SelectedIndexChanged(object sender, EventArgs e)
        {

        }


      

        





    }
}
